/*
 * FSWUniCEUB - 2008
 * 
 * Este arquivo é de propriedade da Fábrica de Software do UniCEUB
 * 
 * Para mais informações entre em contato com a coordenação do
 * curso de Ciência da Computação da instituição.
 */

package br.uniceub.fsw.seguranca.vo;

import br.uniceub.fsw.seguranca.dao.GrupoDAO;
import br.uniceub.fsw.seguranca.dao.ModuloDAO;

/**
 * Value Object da entidade acesso. Usada para transportar os dados
 * de acesso através das várias classes do sistema.
 * 
 * Tabela: TB_Acesso
 *
 * @author Bruno Schifer Bernardi
 */
public class AcessoVO {
    /**
     * Identificador do acesso.
     * 
     * Coluna: ID_Acesso
     */
    private Integer idAcesso;
    
    /**
     * Grupo que possui o acesso.
     * 
     * Tabela referenciada: TB_Grupo
     * Coluna FK: CD_Grupo
     */
    private GrupoVO grupo;
    
    /**
     * Id do grupo.
     * 
     * Tabela referenciada: TB_Grupo
     * Coluna FK: CD_Grupo
     */
    private Integer cdGrupo;
    
    /**
     * Modulo que o grupo ou usuário possuem acesso.
     * 
     * Tabela referenciada: TB_Modulo
     * Coluna FK: CD_Modulo
     */
    private ModuloVO modulo;
    
    /**
     * Id do modulo.
     * 
     * Tabela referenciada: TB_Modulo
     * Coluna FK: CD_Modulo
     */
    private Integer cdModulo;

    /*
     * Getters e Setters.
     * Estes métodos não devem conter nenhuma codificação fora da geração automática.
     * Não é necessária a geração de javadoc para esses métodos.
     */
    public Integer getCdGrupo() {
        return cdGrupo;
    }

    public void setCdGrupo(Integer cdGrupo) {
        this.cdGrupo = cdGrupo;
    }

    public Integer getCdModulo() {
        return cdModulo;
    }

    public void setCdModulo(Integer cdModulo) {
        this.cdModulo = cdModulo;
    }
    
    public GrupoVO getGrupo() {
        if(grupo == null) {
            grupo = new GrupoDAO().consultarPorId(cdGrupo);
        }
        return grupo;
    }

    public void setGrupo(GrupoVO grupo) {
        this.grupo = grupo;
    }

    public Integer getIdAcesso() {
        return idAcesso;
    }

    public void setIdAcesso(Integer idAcesso) {
        this.idAcesso = idAcesso;
    }

    public ModuloVO getModulo() {
        if(modulo == null) {
            modulo = new ModuloDAO().consultarPorId(cdModulo);
        }
        return modulo;
    }

    public void setModulo(ModuloVO modulo) {
        this.modulo = modulo;
    }
}
